package org.tea.inventory.db.dao;

import org.tea.inventory.db.domain.News;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface NewsMapper {

    /**
     * 获取交互内容列表
     */
    List<News> selectByExample(News example);


    //查询trend信息列表
    Map selectTrend(News trend);
    /**
     * 获取交互内容详情
     */
    News selectByPrimaryKey(Integer id);

    /**
     * 获取交互内容列表总条数
     */
    long countByExample(News example);

    /**
     * 录入交互内容
     */
    int insertSelective(News record);

    /**
     * 更新交互内容
     */
    int updateByPrimaryKeySelective(News record);

    /**
     * 删除信息交互内容
     */
    int deleteByPrimaryKey(int id);

    /**
     * 批量删除交互内容
     * @param ids
     * @return
     */
    int deleteQuantity(String ids);
    /**
     * 查询带评论数量、点赞数量 的交互内容列表信息
     * @param news
     * @return
     */
    List<News> selectByExampleWithComment(News news);

    /**
     * 获取交互内容详情,并带评论数量、点赞数量
     */
    News selectByPrimaryKeyWithComment(@Param("id") Integer id, @Param("userIdForZan")Integer userIdForZan);

    /**
     * 查询活动新闻 并获取关联活动的 活动开始时间、活动地址、活动人数
     * @param news
     * @return
     */
    List<News> selectByExampleForActivityNews(News news);

    /**
     * 查询圈子的动态，新闻、活动
     * @param orgId
     * @return
     */
    List<News> selectByOrgIdForActivityNews(@Param("orgId")Integer orgId, @Param("userIdForZan")Integer userIdForZan);

    /**
     * 查询参加的活动
     * @param news
     * @return
     */
    List<News> selectByExampleForMyJoin(News news);

    /**
     * 我参加活动的数量
     * @param news
     * @return
     */
    int countForMyJoin(News news);

    /**
     * 获取圈子动态列表数量
     */
    int countForActivityNews(Integer orgId);

    /**
     * 查询关注好友的动态，新闻、活动
     * @return
     */
    List<News> selectForFriendNews(Integer userId);

    /**
     * 查询关注好友的动态
     */
    int countForFriendNews(Integer userId);

    /**
     * 查询个人动态
     */
    List<News> selectTidings(@Param("title") String title);

    List<News> getNotice(@Param("noticeType") String noticeType);
}
